package steed.util.redis;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;

import steed.util.base.BaseUtil;
import steed.util.base.PathUtil;

public class RedissonUtil {
	public static Map<String, RedissonClient> redissonCache = new HashMap<>();
	/**
	 * 获取RedissonClient实例
	 * @return 用properties/redisson.json下面的配置获取的RedissonClient
	 */
	public static RedissonClient getRedisson() {
		return getRedissonByClassPath("properties/redisson.json");
	}
	
	/**
	 * 获取RedissonClient实例
	 * @param configFilePath 配置文件路径
	 * @return
	 */
	public static RedissonClient getRedisson(String configFilePath) {
		if (redissonCache.get(configFilePath) == null) {
			redissonCache.put(configFilePath, initRedissonClient(configFilePath));
		}
		return redissonCache.get(configFilePath);
	}
	
	/**
	 * 获取RedissonClient实例
	 * @param configFileRelativePath 相对于classPath的配置文件路径
	 * @return
	 */
	public static RedissonClient getRedissonByClassPath(String configFileRelativePath) {
		return getRedisson(PathUtil.praseRelativePath(configFileRelativePath));
	}

	private static RedissonClient initRedissonClient(String configFilePath) {
		try {
			return Redisson.create(Config.fromJSON(new File(configFilePath)));
		} catch (IOException e) {
			BaseUtil.getLogger().error("未找到"+configFilePath+"配置文件!", 3);
		}
		return null;
	}
}
